<?php
/**
 * Created by PhpStorm.
 * User: xiong <1099446868@qq.com>
 * DateTime: 2018/12/15
 * TIME: 23:05
 */

namespace app\index\controller;

use app\index\model\Book as BookModel;
use think\Db;
use think\facade\Cache;
use think\facade\Env;
use think\facade\Request;
use think\facade\Session;

class Book extends BaseController {

    //book详情页
    public function book(int $id) {
        $table = switchTableById2($id);
        $book = BookModel::getBookById($id, $table);
        //因为缓存可能导致最新章节加载不出,所以最近章节不能放入缓存
        $endChapter = BookModel::getEndChapter($id, $table);
        $book = array_merge($book, $endChapter);
        //$book['catalogCount'] = '';
        $this->assign('book', $book);
        $this->assign('id', $id);
        $this->assign('isbook', '1');
        //第一章
        //$this->assign('catalogCount', $book)
        //dump($book);exit;
        return $this->fetch('book/book');
    }

    //book目录页
    public function catalog(int $id) {
        $table = switchTableById2($id);
        $book = BookModel::getBookById($id, $table);

        $catalog = BookModel::getCatalogsByBid($id, $table);

        $count = BookModel::getCatalogCount($id, $table);


        //最新1章节
        $new = end($catalog);
        $new = $new['title'];
        if($count > 12){
            $this->assign('u', array_slice($catalog, -12)); //最近更新
        }
        $this->assign('new', $new);
        $this->assign('count', $count);
        $this->assign('book', $book);
        $this->assign('id', $id);
        $this->assign('catalog', $catalog);
        return $this->fetch('book/catalog');
    }

    public function content(int $bid, int $id) {
        $table = switchTableById2($bid);
        $book = BookModel::Content($bid, $id, $table);
        $catalog = url('/catalog/' . $book['id']);
        $info = url('/search/' . $book['bookname']);
        $this->assign('info', $info);
        $this->assign('book', $book);
        $this->assign('catalog', $catalog);

        return $this->fetch('book/content');
    }

    //这个方法根据结果的不同有两个模板，若未在本地搜索到，则跳往search模板，否则跳往book模板
    public function search(string $searchname) {
        $searchname = addslashes($searchname);
        //exit('网站正在加急制作中~');
        $book = BookModel::getBookByBookName($searchname);
        if(array_key_exists('id', $book) == false){
            return '对不起，本网站暂时未收录这本小说，可以联系站长收录';
        }
        $table = switchTableById2($book['id']);
        $book['end'] = BookModel::getEnd5Chapter($book['id'], $table);
        //dump($book);exit;
        $this->assign('isbook', '0');
        if($this->ismobile()){
            $this->redirect('http://m.xiaojuan.fun/search/'.$searchname.'.html');
        }
        if (array_key_exists('id', $book) === true) {
            $this->assign('book', $book);
            $this->assign('id', $book['id']);
            return $this->fetch('book/book');
        } else {
            //dump($book['books']);exit;
            $this->assign('book', $book);
            return $this->fetch('book/search');
        }

    }

    //爬详情页
    public function searchtodetails() {
        if (Request::isAjax()) {
            $request = Request::instance();
            $param = $request->param();
            $param = json_decode(urldecode($param['data']), true);
            $book = BookModel::SearchToDetails($param);
        }
    }

    //这是网站顶部搜索 不同于search方法，这个方法将跳往 search模板
    public function find() {
        $request = Request::instance();
        $param = $request->param();

        if (!isset($param['keyword'])) {
            $this->redirect("http://www.xiaojuan.fun", 301);
        }
        $find = Db::name('bookname')
            ->where('bookname|author', 'like', '%' . $param['keyword'] . '%')
            ->paginate(20, false,['query'=>$param]);

        $this->assign('page', $find->render());
        $this->assign('book', $find);
        $this->assign('count', $find->total());
        $this->assign('searchname', $param['keyword']);

        return $this->fetch('findToSearch');
    }

    public function cache(){
        for($i =10000;$i<=29347;$i++){
            curl_get('http://www.xiaojuan.fun/book/' .$i. '.html');
            if($i == 10050){
                return 'end';
            }
        }
    }

    public function yasuo(){
        $str = "<div class=\"content\" itemprop=\"acticleBody\">
                    &nbsp;&nbsp;&nbsp;&nbsp;罗峰深吸一口气。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;就差四分！就因为差这四分，自己就没有上军校的机会了。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;十二年的文化教育学习，竟然是这样的结果。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“不能上军校，就不能上军校。又有什么大不了。”罗峰目光一凝，右手竖掌成刀直接朝前方一个横切，空气因为掌刀极速划过产生猛然颤动，发出了让人心颤的掌风声，“这次的昏迷，令我实力提高很多！”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“或许，我现在的身体素质，已经达到武者的身体素质。可以通过‘准武者考核’了。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“就算差一点，相差也不大。认真努力苦练一两个月，就应该能通过‘准武者考核’。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗峰适应能力很强，这次的高考成绩没上本科线，这对他的打击很大，可是‘昏迷’导致他身体素质再一次提高，也令他心中有着自信！<br><br>&nbsp;&nbsp;&nbsp;&nbsp;毕竟，一名军校毕业生的地位，是远远不如一名武者的！<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“咔！”罗峰打开了房门，进入客厅。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;客厅里，父母罗洪国、龚心兰，以及弟弟罗华都转头看过来，三人眼中都有着关心。龚心兰更是站起来，连朝罗峰走来：“小峰，这次高考不能怪你，怪只怪你那个头疼病，唉，这病怎么这时候发作了，这都好几年没发作了。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“哥，你不会被打击了吧？”弟弟罗华坐在轮椅上，故意打趣道。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;之前罗峰在屋内查成绩，而父母和弟弟，也是通过弟弟‘罗华’的笔记本电脑，查到了高考成绩，知道罗峰的高考成绩竟然仅仅差四分就达到本科线。虽然他们有些失望，可是他们更担心罗峰。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗峰一笑：“当然不会打击，爸妈，你们也别怪这头疼病，说实话，还要感谢这头疼病？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“感谢？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“感谢？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“感谢？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗洪国、龚心兰，还有轮椅上的罗华都一个个愣住了，高考这可是人生这一辈子的大事，现在罗峰的高考被这头疼病给毁掉了，还感谢这头疼病？<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“爸妈，阿华。”罗峰微微一笑道，“小时候我也有两次头疼到晕倒，实际上那两次醒来后，我都觉得力气增加不少，跑起来也更快。这一次……也是这样！我感觉得到，我的身体素质比过去强上一大截，估计能够通过‘准武者考核’。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“什么？”罗洪国、龚心兰、罗华三人相互看了看。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“哥，真的假的？”罗华忍不住道。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“当然是真的。”罗峰微微一笑，“通过准武者考核后，就能申请‘武者实战考核’。我对自己实战能力很有自信，今年或许就能成为一名武者！”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;父亲罗洪国，母亲龚心兰，弟弟罗华，三人都被这个消息给震住了。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;武者啊！<br><br>&nbsp;&nbsp;&nbsp;&nbsp;那代表着什么？那代表着人类群体中地位最超然的一群人，代表着特权！代表着大量金钱！代表着高高在上的地位！而且一旦成为武者，带给家庭的各种好处，比成为军校的精英学员要好的多。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“我们家要出一名武者了？”弟弟罗华忍不住大叫起来，“哈哈，哥，我崇拜你。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“小峰，好啊。”罗洪国也是兴奋的一拍罗峰肩膀，“成为武者好啊，和武者一比，军校毕业生又算什么？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;现如今，全世界人类社会，对于武者都是很崇拜很敬仰的。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;见到爸妈、弟弟这么开心，罗峰呵呵一笑：“爸妈，不过还没经过考核，也不能得意太早的。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“18周岁的武者？”罗华不由兴奋的嗷嗷直叫，“如果我哥真成了十八周岁的武者，那，那实在是太，太……牛了！！！”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;××××××<br><br>&nbsp;&nbsp;&nbsp;&nbsp;第二天早晨五点，天蒙蒙亮。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗峰就离开家，朝极限武馆赶去。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“这时候人还真少。”罗峰进入极限武馆后，就发现整个武馆的草地、路道上，只能看到大概近百人的身影。要知道整个武馆的学员有三四万之多的，“每次武馆老师教课，都是晚上教课，晚上才是武馆人最多的时候。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;行走在路道上，罗峰直接赶往高级学员教学楼。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“轰隆隆～～”低沉的气浪声传来。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“咦？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗峰不由转头看去，只见一辆通体白色的显得很是华丽的跑车，缓缓驶进了武馆当中，罗峰不由仔细一看，不由倒吸一口凉气：“是阿斯顿马丁的跑车？还是最新款最昂贵的带有飞行功能的thr—191？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;弟弟是非常喜欢跑车的，在家的时候，也和罗峰夸赞过这辆thr－191。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“是阿斯顿马丁啊。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“是191呢，这可是带飞行功能的。”武馆院内，本三三两两稀少的学员们一个个被吸引过来，“这一辆车，要3600万华夏币呢。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;就在这时候，跑车停在了高级学员教学楼门口。车门打开，从里面走出来一名一身宽松练武服的火红短发男子，这头发明显是染的，他的目光随意的朝周围一扫，掠过那些普通的武馆学员，在罗峰身上略作停顿，而后没说什么，就直接进入了教学楼。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“是武者。”罗峰眼睛一亮。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;刚才这名武者的眼神，都让罗峰觉得压力，这是经历过一次次生死厮杀后，有着钢铁般意志的眼神。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“过去我在武馆从来没见过这名武者？他来武馆干什么？”罗峰也进入了高级学院教学楼的三楼练武厅。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;宽敞的练武厅中，空荡荡，一个人也没有。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;现在只是早上五点多，就算是人最多的晚上，这里一般也不超过二十人，更别说一大清早了。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“我要看看，现在我的实力，到底达到了多少。”罗峰走过去，将拳力测试机的插头给插上，开关打开，又将远处的‘速度测试仪’给打开。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;站在拳力测试机前。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“开始吧！”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗峰深吸一口气，腰胯为中心，强劲的力道透过腰胯发出，而后脊椎猛然弓起，就仿佛一条大蟒蛇，产生一股强劲的力道透过手臂，节节贯串，而后罗峰的拳头就仿佛一道闪电，猛然‘蓬’的声就砸在拳靶上。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“滴，滴，滴！”拳力测试机发出连续三声。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗峰眼睛一亮，平常拳力测试机是不会这种声音的，发出这种声音代表一种情况——拳力超过了1000kg。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“嗯？”罗峰盯着那拳力测试机的显示屏——‘1089kg’。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“这么多？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗峰心中一阵狂喜，武者的身体素质要求是拳力必须达到900kg，而之前自己的拳力是809kg，现在竟然达到了1089公斤，一下子增加了280公斤。远超合格线。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“哈哈。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗峰兴奋的双拳闪电般出拳，整个人左右晃动，只听得‘蓬’‘蓬’的声音不断，几乎眨眼功夫，罗峰就击打了二十多拳。而拳力测试机的屏幕上也显现了一连窜的数字——‘956kg，989kg，923kg，965kg……’。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“在去测试一下速度。”罗峰转头朝跑道走去，“只要我的速度过关，加上我的神经反应速度，之前就达标了。那么准武者考核，就一定能过！”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;罗峰调整一下呼吸。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;嗖！<br><br>&nbsp;&nbsp;&nbsp;&nbsp;整个人仿佛一发炮弹猛然射出，沿着跑道迅速穿过。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;……<br><br>&nbsp;&nbsp;&nbsp;&nbsp;高级学员教学楼四楼，正并肩走着的红发男子，以及黑衣光头中年人正谈笑走着。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“严罗，咱们多久没见了。”光头中年人微笑道，“快三年了吧，当初那个稚嫩小家伙，现如今也是大名鼎鼎了，我可是听说你这一次赚了近一个亿地球币吧，啧啧。看到你，我就觉得，我老喽。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“运气好而已。”红发男子笑着道，“江哥，你当初……”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“滴，滴，滴！”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;楼下传来的微弱声音，让这二人都惊讶相识一眼。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“楼下的拳力测试机，是最初等的拳力测试机，达到1000公斤，会发出这声音。”光头中年人惊讶道，“早上五点多，也有人来练拳，而且一拳能过一千公斤，难道是那个杨武？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“去看看不就知道了？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;呼！呼！<br><br>&nbsp;&nbsp;&nbsp;&nbsp;一黑衣，一白衣，这二人化作两道幻影直接沿着楼梯，几乎一眨眼，就从四楼来到三楼练武厅门口。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;黑衣光头中年人、白衣短发男子并肩看着练武厅内，此时的罗峰正站在跑道前，而后飞窜而过。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“28.1m/s。”黑衣光头中年人，白衣红发男子，都一眼看到速度测试仪屏幕上的显示数字。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“这个罗峰，拳力超过1000公斤，速度竟然达到一秒28.1米。”黑发光头中年人有些吃惊。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“江哥，这个小家伙年级不大吧，竟然达到武者身体素质要求了。”红发男子惊讶道，黑发光头中年人点头道：“嗯，他叫罗峰，是我们武馆这一批中比较有天赋的学员。今年也才刚刚十八周岁！”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“十八周岁？这么小？”红发男子不由眼睛一亮。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;而这时候，发现门口二人的罗峰不由一惊，红发男子是之前开跑车过来的武者，而这黑衣光头中年人可是这所极限武馆的馆主‘江年’，权力最大的人物。按照极限武馆的规矩，学员都是称呼他为‘教官’的。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“教官！”罗峰连行礼喊道。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“过来。”教官江年笑着喊道，“没想到罗峰你竟然这么快，就达到武者素质要求了，我给你介绍一下，这位是你的前辈严罗，严罗，我将你的名字告诉他，没事吧？”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“没事。”严罗看着罗峰，点点头，“这小家伙，这么年轻就达到武者身体素质要求，或许将来，他也能跟我有所交集。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;江年看向罗峰，一笑道：“罗峰，你18周岁，应该是今年高考吧。别管今年考的怎么样了，上学又有什么用？你现在就安心准备‘武者实战考核’吧。哦，对了，7月1号这天，你去一趟扬州城的极限会馆，去那进行‘准武者考核’，以你现在实力，很容易过的。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;“高考？”旁边严罗一笑，“别去大学浪费时间了，你天赋不错，不管做什么事情都要全身心投入，你现在就要将全部精力放在武道之上。小子，等成了武者，加入咱们极限武馆，这才有前途。”<br><br>&nbsp;&nbsp;&nbsp;&nbsp;这两大武者，地位都极高，对社会上所谓的富豪、官员等，都是不屑一顾的。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;而对于同样将跨入武者行列，而且岁数还很小的罗峰，他们却很是期待。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Ps：第一章到！                </div>";

        echo mb_strlen($str) . "<br>";
        echo mb_strlen(gzcompress($str,6)) . "<br>";
        $a = gzcompress($str,6) . "<br>";
        echo gzuncompress($a) . "<br>";
    }

    /**
     * @param int $rid 1 bestseller  2 weekclick 3 weekrecommend 4 month 5 newbook
     * @param int $page
     * @return mixed
     */
    public function rank(int $rid,int $page){
        //Cache::rm('rank');
        if(Cache::has('rank')){
            $rank = Cache::get('rank');
        }else{
            $rank = Db::name('rank')->select();

            Cache::set('rank', $rank, config('rank'));
        }
        array_unshift($rank,[]);
        if($page > $rank[$rid]['total']){
            $page = 1;
        }
        $rankList = BookModel::rank($rid,$page);
        $this->assign('rid', $rid);
        $this->assign('page', $page);
        $this->assign('list', $rankList);
        $this->assign('prev', $page-1);
        $this->assign('next', $page + 1);
        $this->assign('rank', $rank);
        //$this->assign('ranklist', array_shift($rank));

        //dump($rank);exit;
        return $this->fetch();
    }

    public function download(int $id){
        $table = switchTableById2($id);
        $book = Db::name($table)->field('bookname,title,content')->where('bid', $id)->select();
        $filename = $book[0]['bookname'] . '.txt';
        $encoded_filename = urlencode($filename);
        $encoded_filename = str_replace("+", "%20", $encoded_filename);
        header("Content-Type: application/octet-stream");
        if (preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT']) ) {
            header('Content-Disposition:  attachment; filename="' . $encoded_filename . '"');
        } elseif (preg_match("/Firefox/", $_SERVER['HTTP_USER_AGENT'])) {
            header('Content-Disposition: attachment; filename*="utf8' .  $filename . '"');
        } else {
            header('Content-Disposition: attachment; filename="' .  $filename . '"');
        }
        foreach($book as $v){
            echo $v['title'] . "\r\n";
            echo strip_tags($v['content']) . "\r\n";
            echo "\r\n";
        }
    }
}